/* 
自定义new工具函数
  语法: newInstance(Fn, ...args)
  功能: 创建Fn构造函数的实例对象
  实现: 创建空对象obj, 调用Fn指定this为obj, 返回obj
*/
export function newInstance(Fn, ...args) {
    // 创建一个新的对象
    const obj = {}
    // 执行构造函数
    const result = Fn.apply(obj, args) // 相当于: obj.Fn()
    // 如果构造函数执行的结果是对象, 返回这个对象
    if (result instanceof Object) {
      return result
    }
    // 如果不是, 返回新创建的对象
    obj.__proto__.constructor = Fn // 让原型对象的构造器属性指向Fn
    
    return obj
  }